1. Field
The following relates generally to computer graphics and, more specifically, to modeling and animating hair and other hair-like geometry.
2. Related Art
Hair is an important visual component of virtual characters. For example, the shape of a virtual character's hair significantly affects the visual appearance of a character. Hair-like materials are prevalent in many computer graphics situations. Therefore, artists can be helped by being able to use tools for creating, visualizing and manipulating hair models for virtual characters, as well as other surfaces with hair-like characteristics, such as grasses, fur, and so on.
However, realistic hairstyles form complicated geometric structures that make them very difficult to model. A real human head generally contains more than a hundred thousand hair strands, each of which can be a complicated space curve (i.e., a curve in 3-D space). Therefore, modeling each and every hair strand individually is not feasible in practice.
Various approaches have been proposed to simplify hair modeling, at least some of which are introduced below, by way of introduction and background. However, such introduction is not an exhaustive treatment of these techniques, nor impliedly a comprehensive list of approaches that may have been proposed.
One way of hair modeling is through representing the hair model with only an outer surface using parametric surfaces of NURBS patches. This surface can be given a hair like appearance by a texture map of a hair image with a transparency channel. Alternatively, actual hair geometry can be generated along this flat surface. These methods can be improved by adding a thickness to the surface and generating hair strands within a thin shell around this surface. Since the hair model is represented by a flat surface, such methods can only generate hair strands near the outer surface of a hair model and the rest of the hair strands inside the hair volume are not produced with these approaches. Therefore, these methods are limited in terms of the hairstyles that they can properly represent and they generally considered unsuitable for producing realistic hair models.
Another hair modeling approach is to specify various characteristics of a hair model using texture maps on the surface on which the user aims to grow hairs. Multiple texture maps can be used to specify multiple characteristics of hairs growing out of a certain area. Such approaches are most useful for modeling fur and short hair. However, it is difficult to use texture maps for creating complex hairstyles, since the hair model can only be controlled indirectly by varying the colors of various texture maps, and they are considered unsuitable for modeling long hairstyles.
A common hair modeling technique is using wisps (or generalized cylinders). A wisp is essentially a curve in 3D with some thickness. Individual hair strands are generated along this wisp curve within a neighborhood defined by its thickness. The shapes of individual hair strands are often altered by procedural modeling techniques, such as a random variation or a noise function. A hair model can be created using multiple wisps placed within the hair volume. Wisps are most useful for modeling hairstyles with well-defined clusters each of which can be represented by a wisp. However, the resulting hair model appears like multiple clusters of hairs, which are often unrealistic for most hairstyles. Furthermore, modeling and editing a large collection of wisp curves that represent a complex and realistic hairstyle can be difficult and labor intensive. Even small changes to the overall shape of a hair model may require a large collection of wisps within the hair volume to be modified accordingly.
Another common hair modeling approach is interpolating a number of manually created guide hairs. Guide hairs represent a small subset of all hair strands of a hairstyle. The user explicitly models guide hairs and the rest of the hairs are generated by automatically interpolating the shapes of nearby guide hairs. An interpolation can eliminate or reduce undesired clustering produced by wisp-based techniques. After the interpolation, the shapes of individual hair strands are often modified using procedural techniques, which help to produce more natural hairstyles and controlled clustering. However, the modeling process of guide hairs is very similar to modeling wisps. Therefore, depending on the complexity of the hairstyle and the number of guide hairs required, defining the shapes of the guide hairs can be difficult and very laborious.
Another modeling approach for hair makes use of shell surfaces. In this approach hair strands are rooted on one shell surface and they all grow towards a second shell surface, which has a topology that is matched to the first shell surface. Multiple shell surfaces with matching topologies may be used for generating longer hairstyles or for providing more control over the shape of the hair model. Such approaches are quite restrictive in terms of the hair models they can represent and they are not suitable for modeling complex hairstyles. Furthermore, the fact that the user needs to model all shell surfaces explicitly makes these methods less favorable in practice.
To simplify hair modeling process, researches and developers have also tried using different physically based simulation techniques. Such methods include simulating the effect of gravity to find the rest poses of hair strands, simulating a real-world hair dressing session using haptic controls and physically based simulation, modeling hair as streamlines from a fluid dynamics simulation, and using 3D vector fields to shape hair strands or wisp curves. These methods can simplify the modeling process of the overall hair shape and various hairstyles can be generated using these methods. However, just like any other simulation method, controlling these techniques in a precise manner is not easy. With these techniques the shape of the overall hair model is defined indirectly by various parameters of the system and this indirect control makes it difficult to achieve the exact hair model desired by the user.
While at least some of the techniques described above may be able to generate a variety of hairstyles, they lack explicit control over the shape of the overall hair model, they are labor intensive and time consuming, and/or are not intuitive for artistic use. Therefore, there is a need for continued improvements in hair modeling methods and systems.